﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataAccess;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Data;

public partial class administracion_Desplegar : System.Web.UI.Page
{
    private class CasaResultPhoto
    {
        [DataAccessPropierties("idCasa")]
        public int ID { get; set; }

        [DataAccessPropierties("fotografiaCasa")]
        public byte[] Fotografia { get; set; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Unnamed1_Click(object sender, EventArgs e)
    {
        string folder = Server.MapPath("/images/casas");

        //Obtener Imagenes en BD y Guardarlas
        DataAccessCommand commando = new DataAccessCommand("SELECT idCasa,fotografiaCasa FROM casa", CommandType.Text);
        DataAccessDAO dao = DataAccessDAO.GetInstance();

        List<CasaResultPhoto> casas = dao.GetList<CasaResultPhoto>(commando);

        casas = (from casa in casas
                 where casa.Fotografia != null && casa.Fotografia.Count() > 0
                 select casa).ToList();

        //Se procesan fotos...
        int contador = 0;

        foreach (CasaResultPhoto casaResult in casas)
        {
            if (casaResult.Fotografia != null && casaResult.Fotografia.Count() > 0)
            {
                contador++;

                Bitmap imagen = (Bitmap)System.Drawing.Image.FromStream(new MemoryStream(casaResult.Fotografia));

                imagen.SetResolution(400, 300);

                //Se guarda la imagen y se sobreescribe la anterior
                imagen.Save(Path.Combine(folder,String.Format(@"{0}\{1}.jpg", folder, casaResult.ID)), ImageFormat.Jpeg);

                //En esta parte debera guardar en el servidor por medio de ftp...

                imagen.Dispose();

                //Tratamos de llamar al Garbage Collection para que elimine el objeto
                GC.SuppressFinalize(imagen);
            }
        }

        Response.Write(String.Format("Se han procesado {0} fotografias",contador));
    }
}
